//
//  CZEmoticonPackageModel.swift
//  53.表情键盘新工程
//
//  Created by gzxzmac on 16/3/31.
//  Copyright © 2016年 gzxzmac. All rights reserved.
//

import UIKit

/// 表情包模型
class CZEmoticonPackageModel: NSObject {
    
    /// 表情包文件夹名称
    var id: String
    
    /// 表情包名称
    var group_name_cn: String

    /// 所有表情模型,不利于collectionView分页显示
    var emoticons: [CZEmoticonModel]
    
    /// 表情包有所有页数据
    var pageEmoticons: [[CZEmoticonModel]] = [[CZEmoticonModel]]()
    
    /// 构造函数
    init(id: String, group_name_cn: String, emoticons: [CZEmoticonModel]) {
        self.id = id
        self.group_name_cn = group_name_cn
        self.emoticons = emoticons
        
        super.init()
        
        spliteEmoticns()
    }
    
    /// 将表情模型数组拆封成多页
    private func spliteEmoticns() {
        // 在构造函数的时候给属性赋值,不会调用didSet
        // 当别人给emoticons赋值,拆分成多页
        // 计算总页数: 总个数 + 一页个数 - 1 / 一页个数
        let pageCount = (emoticons.count + CZEmoticonNumberOfPage - 1) / CZEmoticonNumberOfPage
        
        // 判断,如果一页表情都没有
        if pageCount == 0 {
            // 创建一页空的表情.
            let emptyEmoticon = [CZEmoticonModel]()
            pageEmoticons.append(emptyEmoticon)
            return
        }
        
        // 遍历,拆分每一页
        for i in 0..<pageCount {
            let location = i * CZEmoticonNumberOfPage
            
            // 判断最后一页截取的长度是否越界
            var length = CZEmoticonNumberOfPage

            // 当最后也得起始值+每页的数量 > 表情总数,说明会越界
            if location + CZEmoticonNumberOfPage > emoticons.count {
                length = emoticons.count - location
            }
            
            let range = NSRange(location: location, length: length)
            
            // 一页表情
            let spliteEmoticons = (emoticons as NSArray).subarrayWithRange(range) as! [CZEmoticonModel]
            pageEmoticons.append(spliteEmoticons)
        }
    }
    
    override var description: String {
        return "\n\t表情包模型:id: \(id), group_name_cn: \(group_name_cn), pageEmoticons: \(pageEmoticons)"
    }
}
